﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Vara_Data_Layer.Vara_Data_Categories;
using Vara_Data_Layer.Vara_Data_Holder;
using Vara_Data_Layer.Vara_Data_Make_Model;
using Vara_Data_Layer.Vara_Data_Location;
using Vara_Data_Layer.Vara_Data_Additional_Option;
using Vara_Data_Layer.Vara_Data_Audit_Schedule;

namespace Vara_Data_Layer.Vara_Data_Asset
{
    public class Vara_Data_Asset : Vara_Data_IAsset
    {
        //private variables 
        private readonly int _id = 0;
        private string _assetLabel = string.Empty;
        private string _serialNumber = string.Empty;
        private string _displayName = string.Empty;
        private Vara_Data_IMake _make;
        private Vara_Data_IModel _model;
        private string _description = string.Empty;
        private string _owner = string.Empty;
        private List<Vara_Data_ICategory> _categories;
        private Vara_Data_IHolder _holder;
        private Vara_Data_IAssetLocation _location;
        private List<Vara_Data_IAdditional_Option> _additionaloptions;
        private DateTime _initialauditdate;
        private Vara_Data_IAudit_Schedule _auditschedule;

        //public properties
        public virtual int ID
        {
            get
            {
                return _id;
            }
        }
        public virtual string AssetLabel
        {
            get
            {
                return _assetLabel;
            }
            set
            {
                _assetLabel = value;
            }
        }
        public virtual string SerialNumber
        {
            get
            {
                return _serialNumber;
            }
            set
            {
                _serialNumber = value;
            }
        }
        public virtual string DisplayName
        {
            get
            {
                return _displayName;
            }
            set
            {
                _displayName = value;
            }
        }
        public virtual Vara_Data_IMake Make
        {
            get
            {
                return _make;
            }
            set
            {
                _make = value;
            }
        }
        public virtual Vara_Data_IModel Model
        {
            get
            {
                return _model;
            }
            set
            {
                _model = value;
            }
        }
        public virtual string Description
        {
            get
            {
                return _description;
            }
            set
            {
                _description = value;
            }
        }
        public virtual List<Vara_Data_ICategory> Categories
        {
            get
            {
                return _categories;
            }
            set
            {
                _categories = value;
            }
        }
        public string Owner
        {
            get
            {
                return _owner;
            }
            set
            {
                _owner = value;
            }
        }
        public Vara_Data_IHolder Holder
        {
            get
            {
                return _holder;
            }
            set
            {
                _holder = value;
            }
        }
        public Vara_Data_IAssetLocation Location
        {
            get
            {
                return _location;
            }
            set
            {
                _location = value;
            }
        }
        public List<Vara_Data_IAdditional_Option> AdditionalOptions
        {
            get
            {
                return _additionaloptions;
            }
            set
            {
                _additionaloptions = value;
            }
        }
        public DateTime InitialAuditDate
        {
            get
            {
                return _initialauditdate;
            }
            set
            {
                _initialauditdate = value;
            }
        }
        public Vara_Data_IAudit_Schedule AuditSchedule
        {
            get
            {
                return _auditschedule;
            }
            set
            {
                _auditschedule = value;
            }
        }

        public Vara_Data_Asset()
        { 
        
        }

        public Vara_Data_Asset(int ID)
        {
            _id = ID;
        }
    }
}
